Programs with Recursively Defined Data Structures Using Pointers

نویسنده

  • K. Mehlhorn
چکیده

1 Introduction The theme of this seminar was to study programs that manipulate dynamically allocated data. The attendees were researchers from three different areas: • Design and implementation of combinatorial (e.g., graph) algorithms with a heavy usage of dynamically allocated memory. Many of these algorithms are currently implemented in C++, e.g., see [MN95]. • Verification of partial correctness of such implementations, e.g., proving that a program only refers to allocated memory cells. Proving that a program does not create memory leaks. By convention, we call these cleanness checks since they must hold for every reasonable program as opposed to correctness, which is program specific. The hope is that some of these tests can be carried out by future compilers. • Compiler optimization to speed up the execution time of such programs. For example prefetching of linked data structures can improve performance by 45%, see [LM96]. Three panels of open problems were held (summarized in Section 3). Few of the open problems already initiated research, e.g., in the area of improving locality of programs that manipulate dynamically allocated memory and in the area of automatically eliminating " checking code " that validates that certain invariants are maintained after a library operation, e.g., that the insertion of a new edge into a directed graph, maintains the Euler equation. 33 talks were given presenting the state of art techniques in these areas (the schedule is given in Section 2 and the abstract is summarized in Section 4). The talks were very interesting and accessible to all groups. Some of the talks presented solutions to open problems. One of the most interesting subject studied is the treatment of memory hierarchy in general and cache in particular. Finally, one talk by John L. Ross presented a solution to a problem posed by Luddy Harrison at the Dagstuhl seminar No. 9535, held in August 1995. The schedule of the workshop was not fixed on the usual daily basis. Instead, we did an experiment on Monday afternoon: the schedule was fixed in an additional " problem session. " 3 In this session speakers from different fields were encouraged to discover relations between their works (the preceding " five minutes madness " session helped a lot) and to build a session. Moreover, we included time for questions at the end of these and other sessions to review all talks in summary. In our opinion, some of the most …

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

On the Impact of Naming Methods for Heap-Oriented Pointers in C Programs

Many applications written in C allocate memory blocks for their major data structures from the heap space at runtime. The analysis of heap-oriented pointers in such programs is critical for compilers to generate high performance code. However, most previous research on pointer analysis mostly focuses on pointers pointing to global or local variables. In this paper, we study points-to analysis o...

متن کامل

Proving Pointer Programs in Hoare Logic

It is possible, but difficult, to reason in Hoare logic about programs which address and modify data structures defined by pointers. The challenge is to approach the simplicity of Hoare logic’s treatment of variable assignment, where substitution affects only relevant assertion formulæ. The axiom of assignment to object components treats each component name as a pointerindexed array. This permi...

متن کامل

Pattern-Based Verification for Trees

Pattern-based verification trying to abstract away the concrete number of repeated memory structures is one of the approaches that have recently been proposed for verification of programs using dynamic data structures linked with pointers. It proved to be very efficient and promising on extended linear data structures. In this paper, we overview some possibilities how to extend this approach to...

متن کامل

Linearity Analysis of Concurrent Logic Programs

Automatic memory management and the hiding of the notion of pointers are the prominent features of symbolic processing languages. They make programming easy and guarantee the safety of memory references. For the memory management of linked data structures, copying garbage collection is most widely used because of its simplicity and desirable properties. However, if certain properties about runt...

متن کامل

Automatic Copying of Pointer-Based Data Structures

In systems with multiple memories, software may need to explicitly copy data from one memory location to another. This copying is required to enable access or to unlock performance, and it is especially important in heterogeneous systems. When the data includes pointers to other data, the copying process has to recursively follow the pointers to perform a deep copy of the entire data structure....

متن کامل

REASONING ABOUT RECURSIVELY DEFINED DATA STRUCTURES Derek

A decision algorithm is given for the quantifier-free theory of recursively defined data structures which, for a conjunction of length n, decides its satisfiability in time linear in n. The first-order theory of recursively defined data structures, in particular the first-order theory of LISP list structure {the theory of CONS, CAR and CDR), is shown to be decidable but not elementary recursive...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1998